﻿namespace DigitalQuran.Numerology
{
    /// <summary>
    /// Type of Number
    /// </summary>
    public enum NumberType
    {
        /// <summary>
        /// Any integer number from 1 to infinity
        /// </summary>
        Natural,

        /// <summary>
        /// Indivisible by 2
        /// </summary>
        Odd,

        /// <summary>
        /// Divisible by 2
        /// </summary>
        Even,

        /// <summary>
        /// Indivisible by any other number (divisibility by 1 never divides a number into smaller parts)
        /// </summary>
        Prime,

        /// <summary>
        /// Prime with Prime digit sum
        /// </summary>
        AdditivePrime,

        /// <summary>
        /// Additive prime with prime digits
        /// </summary>
        PurePrime,

        /// <summary>
        /// Divisible by some prime (child of the mother prime)
        /// </summary>
        Composite,

        /// <summary>
        /// Composite with composite digit sum
        /// </summary>
        AdditiveComposite,

        /// <summary>
        /// Additiver composite with composite digits
        /// </summary>
        PureComposite,

        /// <summary>
        /// p of prime 2^p - 1
        /// </summary>
        MersennePrime,

        /// <summary>
        /// n2 = n0 + n1 and n2/n1 ~= the golden ratio
        /// </summary>
        Fibonacci,

        /// <summary>
        /// n*(n+1)*(n+2)/6   = 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540, 1771, 2024, 2300, 2600, 2925, 3276, 3654, 4060, 4495, 4960, 5456, 5984, 6545, 7140, 7770, 8436, 9139, 9880, 10660, 11480, 12341, 13244, 14190, 15180, ...
        /// </summary>
        Tetrahedral,

        /// <summary>
        /// n*(n+1)*(2*n+1)/6 = 1, 5, 14, 30, 55, 91, 140, 204, 285, 385, 506, 650, 819, 1015, 1240, 1496, 1785, 2109, 2470, 2870, 3311, 3795, 4324, 4900, 5525, 6201, 6930, 7714, 8555, 9455, 10416, 11440, 12529, 13685, 14910, 16206, 17575, 19019, 20540, 22140, 23821, 25585, 27434, 29370, ...
        /// </summary>
        Pyramidal,

        /// <summary>
        /// n^3               = 1, 8, 27, 64, 125, ...
        /// </summary>
        Cubic,

        /// <summary>
        /// Not a number
        /// </summary>
        NaN
    };

    //http://en.wikipedia.org/wiki/Polygon
    /// <summary>
    /// Type of Polygon
    /// </summary>
    public enum PolygonType : byte
    {
        /// <summary>
        /// 3 Sided Polygon
        /// </summary>
        Triangular = 3,

        /// <summary>
        /// 4 Equal Sided Polygon
        /// </summary>
        Square = 4,

        /// <summary>
        /// 5 Sided Polygon
        /// </summary>
        Pentagonal = 5,

        /// <summary>
        /// 6 Sided Polygon
        /// </summary>
        Hexagonal = 6,

        /// <summary>
        /// 7 Sided Polygon
        /// </summary>
        Heptagonal = 7,

        /// <summary>
        /// 8 Sided Polygon
        /// </summary>
        Octagonal = 8,

        /// <summary>
        /// 9 Sided Polygon
        /// </summary>
        Nonagonal = 9,

        /// <summary>
        /// 10 Sided Polygon
        /// </summary>
        Decagonal = 10,

        /// <summary>
        /// Eleven Sided Polygon
        /// </summary>
        Hendecagonal = 11,

        /// <summary>
        /// Twelve Sided Polygon
        /// </summary>
        Dodecagonal = 12,

        /// <summary>
        /// Thirteen Sided Polygon
        /// </summary>
        Tridecagonal = 13,

        /// <summary>
        /// Fourteen Sided Polygon
        /// </summary>
        Tetradecagonal = 14,
        
        /// <summary>
        /// Fifteen Sided Polygon
        /// </summary>
        Pentadecagonal = 15,

        /// <summary>
        /// Sixteen Sided Polygon
        /// </summary>
        Hexadecagonal = 16,

        /// <summary>
        /// Seventeen Sided Polygon
        /// </summary>
        Heptadecagonal = 17,

        /// <summary>
        /// Eighteen Sided Polygon
        /// </summary>
        Octadecagonal = 18,
        
        /// <summary>
        /// Nineteen Sided Polygon
        /// </summary>
        Nonadecagonal = 19,
        
        /// <summary>
        /// Twenty Sided Polygon
        /// </summary>
        Icosagonal = 20,

        /// <summary>
        /// Twenty One Sided Polygon
        /// </summary>
        Icosihenagonal = 21,

        /// <summary>
        /// Twenty Two Sided Polygon
        /// </summary>
        Icosidigonal = 22,

        /// <summary>
        /// Twenty Third Sided Polygon
        /// </summary>
        Icositrigonal = 23,

        /// <summary>
        /// Twenty Four Sided Polygon
        /// </summary>
        Icositetragonal = 24,
    };

    /// <summary>
    /// Type of Chemical Polyhex Hydrocarbons with 19 Hexagons
    /// </summary
    public enum PolyhexType : byte
    {
        /// <summary>
        /// C2 H Polyhex Hydrocarbon
        /// </summary>
        C2hPolyhexHydrocarbon,

        /// <summary>
        /// C2 V Polyhex Hydrocarbon
        /// </summary>
        C2vPolyhexHydrocarbon
    };

    public enum PivotType : byte {
        Book,
        Chapter,
        ChapterFirstFactors,
        ChapterSecondFactors,
        ChapterVerses,
        SupportChapters,
    }
}